]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
extensionPrefs: Sync list visibility on status changes
authorFlorian Müllner <fmuellner@gnome.org>
Thu, 12 Mar 2020 21:55:43 +0000 (22:55 +0100)
committerFlorian Müllner <florian.muellner@gmail.com>
Sun, 22 Mar 2020 13:30:09 +0000 (13:30 +0000)
We only show the list of system- and user extensions if corresponding
extensions are installed, however we only update the visibility
after loading the initial list of extensions.

As it's possible for the first user extension to be installed while the
app is open or the last one to be removed, we should also update the
list visibility after extension state changes.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1088

js/extensionPrefs/js/main.js

index 9dab3c392862beac30c68e8c07c297da1459d2fa..d1da73a025bb2fd72a79e5c01e9772a5b47633ee 100644 (file)
@@ -423,9 +423,11 @@ var ExtensionsWindow = GObject.registerClass({
         if (row) {
             if (extension.state === ExtensionState.UNINSTALLED)
                 row.destroy();
-            return; // we only deal with new and deleted extensions here
+        } else {
+            this._addExtensionRow(extension);
         }
-        this._addExtensionRow(extension);
+
+        this._syncListVisibility();
     }
 
     _scanExtensions() {
@@ -471,6 +473,16 @@ var ExtensionsWindow = GObject.registerClass({
             });
     }
 
+    _syncListVisibility() {
+        this._userList.visible = this._userList.get_children().length > 0;
+        this._systemList.visible = this._systemList.get_children().length > 0;
+
+        if (this._userList.visible || this._systemList.visible)
+            this._mainStack.visible_child_name = 'main';
+        else
+            this._mainStack.visible_child_name = 'placeholder';
+    }
+
     _checkUpdates() {
         let nUpdates = this._userList.get_children().filter(c => c.hasUpdate).length;
 
@@ -482,14 +494,7 @@ var ExtensionsWindow = GObject.registerClass({
     }
 
     _extensionsLoaded() {
-        this._userList.visible = this._userList.get_children().length > 0;
-        this._systemList.visible = this._systemList.get_children().length > 0;
-
-        if (this._userList.visible || this._systemList.visible)
-            this._mainStack.visible_child_name = 'main';
-        else
-            this._mainStack.visible_child_name = 'placeholder';
-
+        this._syncListVisibility();
         this._checkUpdates();
 
         if (this._startupUuid)